﻿Imports System.Data.SqlClient

Public Class frmNominaBellavista
    Dim Infonavit(1500) As Integer
    Dim Fonacot(1500) As Integer
    Dim Nom As New clsNominaGeneral
    Dim Gen As New clsNominaDetalle
    Dim Info As New clsAbonosInfonavit
    Dim Fona As New clsAbonosFonacot
    Dim Mov As New clsMovimientos
    Dim Nomi As Integer
    Dim Acum As New clsSueldosAcumulados
    Dim Guardado As Boolean
    Dim PuedeContinuar As Boolean

    Private Sub RadButton3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadButton3.Click
        GeneraPreciosdeVueltas()


    End Sub
    Function DiasCapturados()
        Dim FechaInicial As String = datInicial.Value.ToString("MM/dd/yyyy")
        Dim FechaFinal As String = datFinal.Value.ToString("MM/dd/yyyy")

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = AUSLConnection
        Dim strSql As String = "SELECT FechaOperacion FROM DiasOperacion WHERE CONVERT(VARCHAR,FechaOperacion,101)>='" & FechaInicial & "' AND CONVERT(VARCHAR,FechaOperacion,101)<='" & FechaFinal & "' GROUP BY FechaOperacion"

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim Dias As Integer = 0

        Do While rdBuscar.Read
            Dias = Dias + 1
        Loop

        Return Dias

    End Function
    Function DiasIngreso()
        Dim FechaInicial As String = datInicial.Value.ToString("MM/dd/yyyy")
        Dim FechaFinal As String = datFinal.Value.ToString("MM/dd/yyyy")

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = CitraConnection
        Dim strSql As String = "SELECT Fecha FROM NominasIngreso WHERE CONVERT(VARCHAR,Fecha,101)>='" & FechaInicial & "' AND CONVERT(VARCHAR,Fecha,101)<='" & FechaFinal & "' GROUP BY Fecha"

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim Dias As Integer = 0

        Do While rdBuscar.Read
            Dias = Dias + 1
        Loop

        Return Dias

    End Function
    Sub GeneraPreciosdeVueltas()


        Dim FechaInicial As String = datInicial.Value.ToString("MM/dd/yyyy")
        Dim FechaFinal As String = datFinal.Value.ToString("MM/dd/yyyy")

        Call SetSqlCitra("DELETE FROM PrecioVueltasBella WHERE CONVERT(VARCHAR,Fecha,101)>='" & FechaInicial & "' AND CONVERT(VARCHAR,Fecha,101)<='" & FechaFinal & "'")

        Dim DiasCapturadosPlan As Integer = DiasCapturados()
        If DiasCapturadosPlan < 7 Then
            MsgBox("No se ha registrado el plan de operacion para todos los dias de la semana", MsgBoxStyle.Exclamation, "Aviso")
            Exit Sub
        End If

        Dim DiasCapturadosIngreso As Integer = DiasIngreso()
        If DiasCapturadosIngreso < 7 Then
            MsgBox("No se ha registrado el ingreso para todos los dias de la semana", MsgBoxStyle.Exclamation, "Aviso")
            Exit Sub
        End If

        Dim TotalIngreso As Double = BuscarDblDatoCitra("SELECT SUM(INGRESO) AS INGRESO FROM NominasIngreso WHERE CONVERT(VARCHAR,Fecha,101)>='" & FechaInicial & "' AND CONVERT(VARCHAR,Fecha,101)<='" & FechaFinal & "'")
        Dim IngresoporDia As Double = TotalIngreso / 7

        'Dim AutobusesPlan As Integer=BuscarIntDatoAUSL("SELECT SUM(Autobuses) as Autobuses FROM ")

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = AUSLConnection
        Dim strSql As String = "Select FechaOperacion FROM DiasOperacion WHERE CONVERT(VARCHAR,FechaOperacion,101)>='" & FechaInicial & "' AND CONVERT(VARCHAR,FechaOperacion,101)<='" & FechaFinal & "' GROUP BY FechaOperacion ORDER BY FechaOperacion"

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim Fecha As Date
        Dim Fechastr As String = ""
        Dim TipoDia As Integer = 0
        Dim NoAutobuses As Integer = 0
        Dim TotalPorAutobus As Double = 0


        Do While rdBuscar.Read
            Fecha = rdBuscar("FechaOperacion")
            Fechastr = Fecha.ToString("MM/dd/yyyy")
            TipoDia = BuscarIntDatoAUSL("SELECT TipoDia FROM DiasOperacion WHERE CONVERT(VARCHAR,FechaOperacion,101)='" & Fechastr & "'")
            NoAutobuses = BuscarIntDatoAUSL("SELECT SUM(Autobuses) as Buses FROM PlanOperacion WHERE TipoDia=" & TipoDia)
            TotalPorAutobus = IngresoporDia / NoAutobuses
            ValorVuelta(TotalPorAutobus, TipoDia, Fecha)

        Loop


        dgNomina.Visible = True
        PreparaGrid()
        CargaNomina()

    End Sub
    Sub ValorVuelta(ByRef TotalxAutobus As Double, ByRef TipoDia As Integer, ByRef Fecha As Date)
        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = AUSLConnection
        Dim strSql As String = "SELECT * FROM PlanOperacion WHERE TipoDia=" & TipoDia

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim IdRuta As Integer = 0
        Dim BusesXRuta As Integer = 0
        Dim TotalXRuta As Double = 0
        Dim Vueltas As Double = 0
        Dim PrecioVuelta As Double = 0
        Dim Precio As New clsPrecioVueltasBella

        Do While rdBuscar.Read
            IdRuta = rdBuscar("IdRuta")
            BusesXRuta = rdBuscar("Autobuses")
            TotalXRuta = TotalxAutobus * BusesXRuta
            Vueltas = rdBuscar("Vueltas")
            PrecioVuelta = TotalXRuta / Vueltas
            Precio.IdRuta = IdRuta
            Precio.Precio = PrecioVuelta
            Precio.Fecha = Fecha
            Precio.Insertar()
        Loop

    End Sub
    Sub PreparaGrid()
        lblStatus.Text = "Preparando tablas..."
        Application.DoEvents()

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = CitraConnection

        Dim strSql As String = ""
        strSql = "Select * FROM Adeudos WHERE idAdeudo>5 ORDER BY Prioridad"

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim I As Integer

        dgNomina.Columns(1).ReadOnly = True
        dgNomina.Columns(2).ReadOnly = True
        dgNomina.Columns(3).ReadOnly = False
        dgNomina.Columns(4).ReadOnly = True
        dgNomina.Columns(5).ReadOnly = True
        dgNomina.Columns(6).ReadOnly = True
        dgNomina.Columns(7).ReadOnly = True
        dgNomina.Columns(8).ReadOnly = True
        dgNomina.Columns(9).ReadOnly = True
        dgNomina.Columns(10).ReadOnly = True
        dgNomina.Columns(11).ReadOnly = True
        dgNomina.Columns(12).ReadOnly = True
        dgNomina.Columns(14).ReadOnly = False
        dgNomina.Columns(15).ReadOnly = False

        For I = 3 To dgNomina.Columns.Count - 1
            dgNomina.Columns(I).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            dgNomina.Columns(I).DefaultCellStyle.Format = "N2"
        Next
        dgNomina.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        dgNomina.Columns(4).DefaultCellStyle.Format = "N0"

        I = 17
        Do While rdBuscar.Read()
            dgNomina.Columns.Add("Col" & I, rdBuscar("Nombre").ToString.Trim)
            dgNomina.Columns(I).Width = 80
            dgNomina.Columns(I).ReadOnly = False
            dgNomina.Columns(I).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            dgNomina.Columns(I).DefaultCellStyle.Format = "N2"
            I = I + 1
        Loop
        dgNomina.Columns.Add("Col" & I, "Total Deducciones")
        dgNomina.Columns(I).Width = 80
        dgNomina.Columns(I).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        dgNomina.Columns(I).DefaultCellStyle.Format = "N2"
        dgNomina.Columns(I).ReadOnly = True
        I = I + 1
        dgNomina.Columns.Add("Col" & I, "Total")
        dgNomina.Columns(I).Width = 80
        dgNomina.Columns(I).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        dgNomina.Columns(I).DefaultCellStyle.Format = "N2"
        dgNomina.Columns(I).ReadOnly = True
        For I = 1 To 2
            dgNomina.Columns(I).Frozen = True
        Next

    End Sub
    Sub CargaNomina()
        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = AUSLConnection
        Dim NuevaFecha1 As String = datInicial.Value.ToString("MM/dd/yyyy")
        Dim NuevaFecha2 As String = datFinal.Value.ToString("MM/dd/yyyy")
        Dim strSql As String = ""
       
        strSql = "Select Fecha,IdAutobus,L.IdOperador,NoEconomico,CodigoOperador,NombreOperador,Vueltas,IdRuta " & _
                 " FROM Liquidacion L" & _
                 " INNER JOIN OperadoresGlobal O " & _
                 " ON L.CodigoOperador=O.Codigo" & _
                 " WHERE convert(varchar,fecha,101)>='" & NuevaFecha1 & "' " & _
                 " AND convert(varchar,fecha,101)<='" & NuevaFecha2 & "' " & _
                 " AND O.Empresa='LCB'" & _
                 " ORDER BY CodigoOperador,Fecha"

        lblStatus.Text = "Buscando registros..."
        Application.DoEvents()

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim Row As DataRow
        Dim Operador As Integer = 0
        Dim Primero As Boolean = True
        Dim Sueldo As Double = 0
        Dim Nombre As String = ""
        Dim Actual As Integer
        Dim SueldoNomina As Double = 0
        Dim dias As Integer = 0


        Dim DiferenciaSueldo As Double = 0
        'Variables para obtener precio
        'Dim IDRuta As Integer = 0
        Dim Precio As Double = 0
        Dim Vueltas As Decimal = 0

        'Variables globales para percepciones
        Dim SM_Zona_A As Double = BuscarDblDatoCitra("SELECT MONTO FROM SalariosMinimos WHERE ZONA='A'")
        Dim SM_Zona_C As Double = BuscarDblDatoCitra("SELECT MONTO FROM SalariosMinimos WHERE ZONA='C'")
        Dim SueldoDiario As Double = 62.33 * 3.5
        Dim Despensa As Double = 0
        Dim Total_Percepciones As Double = 0
        Dim Horas_Extras As Double = 0
        Dim CalculoExtras As Double = 0
        Dim Deporte As Double = 0
        Dim Puntualidad As Double = 0
        Dim Asistencia As Double = 0
        Dim Gratificacion As Double = 0

        'Variables para deducciones
        Dim BaseGravada As Double
        Dim LimInferior As Double
        Dim ExcLimInf As Double
        Dim PorcenLimInfe As Double
        Dim ImptoMarginal As Double
        Dim CuotaFija As Double
        Dim Cesantia As Double
        Dim Excedente38mf As Double = 27.9599
        Dim ImpRetener As Double
        Dim Impto As Double
        Dim Imss As Double
        Dim Invalidez As Double
        Dim Maternidad As Double
        Dim Medicos As Double
        Dim Subsidio As Double
        Dim PrestacionDinero As Double
        Dim PrestacionEspecie As Double
        Dim SDI As Double = 216.13
        Dim TotalDeducciones As Double = 0
        Dim TotalNeto As Double = 0
        Dim CargoBimestre As Double = 0
        Dim AbonoBimestre As Double = 0
        Dim RestaBimestre As Double = 0
        Dim DescuentoInfonavit As Double = 0
        Dim Porcentaje As Decimal = 0
        Dim DeduccionesVerificar As Double = 0
        Dim CargoMes As Double = 0
        Dim AbonoMes As Double = 0
        Dim RestaMes As Double = 0
        Dim DescuentoFonacot As Double = 0
        Dim TotalColumnas As Integer = dgNomina.Columns.Count
        Dim DescuentoDinamico As Integer = 0
        Dim MontoDescontado As Double = 0
        Dim FechaLiquidacion As Date = Now.AddDays(10)
        Dim FechaLiquidacionFormateada As String = ""
        Dim IDEmpleado As Integer = 0
        Dim CodigoEmpleado As String = 0
        Dim Tarjeta As Double
        Dim UltimoPeriodo As Integer = 0
        Dim IdFona As Integer = 0
        Dim IdInfo As Integer = 0
        Dim IdRuta As Integer = 0
        Dim FechaActual As String = ""

        lblStatus.Text = "Preparando formulas..."
        Application.DoEvents()
        Primero = False

        'BuscaInfonavit()
        'BuscaFonacot()
        Dim DiasDescontarInfonavit As Decimal = 0
        Dim DiasDescontarFonacot As Decimal = 0

        'Prepara dias a descontar de Infonavit*******************************************************************************************
        Dim IdTipoPeriodo As Integer = BuscarIntDatoNominas("NOM10023", "IdTipoPeriodo", "NombreTipoPeriodo='" & lstPeriodos.Text.Trim & "'")
        Dim PeriodoInicialInfonavit As Integer = BuscarIntDatoCitra("PeriodoInfonavit", "Del", "Bimestre=" & txtInfonavit.Text & " AND Anio=" & txtAnio.Text)
        Dim PeriodoFinalInfonavit As Integer = BuscarIntDatoCitra("PeriodoInfonavit", "Al", "Bimestre=" & txtInfonavit.Text & " AND Anio=" & txtAnio.Text)
        Dim FechaInicialPeriodoInfFon As Date = BuscarDateDatoNominas("SELECT FechaInicio FROM NOM10002 WHERE IdTipoPeriodo=" & IdTipoPeriodo & " AND Ejercicio=" & txtAnio.Text & " AND NumeroPeriodo=" & txtNomina.Text)
        If txtNomina.Text >= PeriodoInicialInfonavit And txtNomina.Text <= PeriodoFinalInfonavit Then
            Dim FechaInicialInfonavit As Date = BuscarDateDatoNominas("SELECT FechaInicio FROM NOM10002 WHERE IdTipoPeriodo=" & IdTipoPeriodo & " AND Ejercicio=" & txtAnio.Text & " AND NumeroPeriodo=" & PeriodoInicialInfonavit)
            Dim FechaFinalInfonavit As Date = BuscarDateDatoNominas("SELECT FechaFin FROM NOM10002 WHERE IdTipoPeriodo=" & IdTipoPeriodo & " AND Ejercicio=" & txtAnio.Text & " AND NumeroPeriodo=" & PeriodoFinalInfonavit)
            Dim DiasTotalesDescuentoInf As Integer = DateDiff(DateInterval.Day, FechaInicialInfonavit, FechaFinalInfonavit)
            Dim DiasRestantesInfonavit As Integer = DateDiff(DateInterval.Day, FechaInicialPeriodoInfFon, FechaFinalInfonavit)
            DiasDescontarInfonavit = (DiasRestantesInfonavit * 35) / DiasTotalesDescuentoInf
        Else
            DiasDescontarInfonavit = 0
        End If


        'Prepara dias a descontar de fonacot********************************************************************************************
        Dim PeriodoInicialFonacot = BuscarIntDatoCitra("PeriodoFonacot", "Del", "Mes=" & txtFonacot.Text & " AND Anio=" & txtAnio.Text)
        Dim PeriodoFinalFonacot = BuscarIntDatoCitra("PeriodoFonacot", "Al", "Mes=" & txtFonacot.Text & " AND Anio=" & txtAnio.Text)
        If txtNomina.Text >= PeriodoInicialFonacot And txtNomina.Text <= PeriodoFinalFonacot Then
            Dim FechaInicialFonacot As Date = BuscarDateDatoNominas("SELECT FechaInicio FROM NOM10002 WHERE IdTipoPeriodo=" & IdTipoPeriodo & " AND Ejercicio=" & txtAnio.Text & " AND NumeroPeriodo=" & PeriodoInicialFonacot)
            Dim FechaFinalFonacot As Date = BuscarDateDatoNominas("SELECT FechaFin FROM NOM10002 WHERE IdTipoPeriodo=" & IdTipoPeriodo & " AND Ejercicio=" & txtAnio.Text & " AND NumeroPeriodo=" & PeriodoFinalFonacot)
            Dim DiasTotalesDescuentoFon As Integer = DateDiff(DateInterval.Day, FechaInicialFonacot, FechaFinalFonacot)
            Dim DiasRestantesFonacot As Integer = DateDiff(DateInterval.Day, FechaInicialPeriodoInfFon, FechaFinalFonacot)
            DiasDescontarFonacot = (DiasRestantesFonacot * 15) / DiasTotalesDescuentoFon
        Else
            DiasDescontarFonacot = 0
        End If


        Do While rdBuscar.Read()
            If Operador <> rdBuscar("IdOperador") Then
                If Sueldo > 0 Then
                    If Primero = False Then
                        SueldoNomina = SueldoDiario * dias
                        If Sueldo <= SueldoDiario Then
                            SueldoNomina = Sueldo
                        ElseIf SueldoNomina > Sueldo Then
                            SueldoNomina = Sueldo
                        End If
                        DiferenciaSueldo = Sueldo - SueldoNomina
                        'Calcula Despensa***********************************
                        Despensa = (SM_Zona_A * 0.4) * 7
                        If DiferenciaSueldo < Despensa Then
                            Despensa = DiferenciaSueldo
                        ElseIf Despensa > DiferenciaSueldo Then
                            Despensa = DiferenciaSueldo
                        End If
                        DiferenciaSueldo = Sueldo - (SueldoNomina + Despensa)
                        'Calcula Horas Extras*******************************
                        CalculoExtras = ((((SM_Zona_A * 3.5) / 8) * 2) * 9)
                        If CalculoExtras < (SM_Zona_C * 5) Then
                            Horas_Extras = CalculoExtras
                        Else
                            Horas_Extras = SM_Zona_C * 5
                        End If
                        If DiferenciaSueldo < Horas_Extras Then
                            Horas_Extras = DiferenciaSueldo
                        ElseIf Horas_Extras > DiferenciaSueldo Then
                            Horas_Extras = DiferenciaSueldo
                        End If
                        DiferenciaSueldo = Sueldo - (SueldoNomina + Despensa + Horas_Extras)
                        'Calcula Deporte y Cultura**************************
                        Deporte = SueldoNomina * 0.1
                        If DiferenciaSueldo < Deporte Then
                            Deporte = DiferenciaSueldo
                        ElseIf Deporte > DiferenciaSueldo Then
                            Deporte = DiferenciaSueldo
                        End If
                        DiferenciaSueldo = Sueldo - (SueldoNomina + Despensa + Horas_Extras + Deporte)
                        'Calcula premio de puntualidad**********************
                        Puntualidad = SueldoNomina * 0.1
                        If DiferenciaSueldo < Puntualidad Then
                            Puntualidad = DiferenciaSueldo
                        ElseIf Puntualidad > DiferenciaSueldo Then
                            Puntualidad = DiferenciaSueldo
                        End If
                        DiferenciaSueldo = Sueldo - (SueldoNomina + Despensa + Horas_Extras + Deporte + Puntualidad)
                        'Calcula premio de asistencia**********************
                        Asistencia = SueldoNomina * 0.1
                        If DiferenciaSueldo < Asistencia Then
                            Asistencia = DiferenciaSueldo
                        ElseIf Asistencia > DiferenciaSueldo Then
                            Asistencia = DiferenciaSueldo
                        End If
                        DiferenciaSueldo = Sueldo - (SueldoNomina + Despensa + Horas_Extras + Deporte + Puntualidad + Asistencia)
                        'Calcula gratificacion*****************************
                        Gratificacion = DiferenciaSueldo

                        Total_Percepciones = SueldoNomina + Despensa + Horas_Extras + Deporte + Puntualidad + Asistencia + Gratificacion
                        'Porcentaje = Total_Percepciones * ((BuscarDblDatoCitra("Empleados", "PorcentajeDescuento", "IdEmpleado=" & IDEmpleado)) * 0.01)
                        'Muestra valores*******************************************************************************************************

                        '////////////////////////////CALCULO DE DEDUCCIONES////////////////////////////////////////////////////////////////////

                        'Calcula Tarjeta*****************************************
                        Tarjeta = 10 * dias
                        Porcentaje = Total_Percepciones * ((BuscarDblDatoCitra("Empleados", "PorcentajeDescuento", "IdEmpleado=" & IDEmpleado)) * 0.01)
                        'Calcula Infonavit*****************************************

                        If DiasDescontarInfonavit > 0 Then
                            CargoBimestre = BuscarDblDatoCitra("SELECT SUM(Monto) AS CMONTO FROM CargosInfonavit WHERE IdEmpleado=" & IDEmpleado & " AND Bimestre=" & txtInfonavit.Text & " AND YEAR(Fecha)=" & txtAnio.Text)
                            'AbonoBimestre = Infonavit(IDEmpleado)
                            RestaBimestre = CargoBimestre - AbonoBimestre
                            If RestaBimestre > 0 Then
                                'IdInfo = BuscarIntDato("SELECT max(CIDINFO) as cidinfo FROM MGWINFONAVIT WHERE CIDEMPLEAD=" & IDEmpleado & " AND cBimestre=" & txtInfonavit.Text & " AND YEAR(CFECHA)=" & txtAnio.Text)
                                DescuentoInfonavit = (RestaBimestre / DiasDescontarInfonavit) * dias '(CargoBimestre / (BuscarDblDato("SELECT cDias FROM MGWINFONAVIT WHERE CIDINFO=" & IdInfo))) * dias
                                If DescuentoInfonavit > RestaBimestre Then
                                    DescuentoInfonavit = RestaBimestre
                                End If
                                DeduccionesVerificar = ImpRetener + Imss + DescuentoInfonavit + Tarjeta
                                If DeduccionesVerificar > Porcentaje Then
                                    DescuentoInfonavit = Porcentaje - (ImpRetener + Imss)
                                    If DescuentoInfonavit < 0 Then
                                        DescuentoInfonavit = 0
                                    End If
                                End If
                            Else
                                DescuentoInfonavit = 0
                            End If
                        End If



                        'Calcula Fonacot******************************************
                        If DiasDescontarFonacot > 0 Then
                            CargoMes = BuscarDblDatoCitra("SELECT SUM(Monto) AS CMONTO FROM CargosFonacot WHERE IdEmpleado=" & IDEmpleado & " AND Mes=" & txtFonacot.Text & " AND YEAR(Fecha)=" & txtAnio.Text)
                            'AbonoMes = Fonacot(IDEmpleado)
                            RestaMes = CargoMes - AbonoMes
                            UltimoPeriodo = BuscarIntDatoCitra("SELECT AL FROM PeriodoFonacot WHERE Mes=" & txtFonacot.Text & " AND Anio=" & txtAnio.Text)

                            If RestaMes > 0 Then
                                'IdFona = BuscarIntDato("SELECT max(CIDFONA) as cidfona FROM MGWFONACOT WHERE CIDEMPLEAD=" & IDEmpleado & " AND CMES=" & txtFonacot.Text & " AND YEAR(CFECHA)=" & txtAnio.Text)
                                DescuentoFonacot = (RestaMes / DiasDescontarFonacot) * dias '(CargoMes / (BuscarDblDato("SELECT cDias FROM MGWFONACOT WHERE CIDFONA=" & IdFona))) * dias
                                If DescuentoFonacot > RestaMes Then
                                    DescuentoFonacot = RestaMes
                                End If
                                DeduccionesVerificar = ImpRetener + Imss + DescuentoInfonavit + DescuentoFonacot + Tarjeta
                                If DeduccionesVerificar > Porcentaje Then
                                    If DescuentoFonacot > 0 Then
                                        DescuentoFonacot = Porcentaje - (ImpRetener + Imss + DescuentoInfonavit)
                                    End If
                                    If DescuentoFonacot < 0 Then
                                        DescuentoFonacot = 0
                                    End If
                                End If

                            Else
                                DescuentoFonacot = 0
                            End If
                        End If



                        'Imprime valores de columnas fijas*****************************************************
                        dgNomina.Rows.Add(Row)
                        Actual = dgNomina.Rows.Count - 1
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(0).Value = IDEmpleado
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(1).Value = CodigoEmpleado
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(2).Value = Nombre
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(3).Value = Sueldo
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(4).Value = dias
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(5).Value = SueldoNomina
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(6).Value = Despensa
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(7).Value = Horas_Extras
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(8).Value = Deporte
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(9).Value = Puntualidad
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(10).Value = Asistencia
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(11).Value = Gratificacion
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(12).Value = Total_Percepciones
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(13).Value = ImpRetener
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(14).Value = Tarjeta
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(15).Value = DescuentoInfonavit
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(16).Value = DescuentoFonacot
                        Application.DoEvents()

                        'Calcula descuentos dinamicos*****************************************************
                        MontoDescontado = ImpRetener + Imss + DescuentoInfonavit + DescuentoFonacot + Tarjeta
                        If TotalColumnas > 19 Then
                            For i = 17 To dgNomina.Columns.Count - 3
                                'DescuentoDinamico = Monto_Descuento(dgNomina.Columns(i).HeaderText.ToString.Trim, IDEmpleado, dias)
                                DeduccionesVerificar = MontoDescontado + DescuentoDinamico
                                If DeduccionesVerificar > Porcentaje Then
                                    DescuentoDinamico = Porcentaje - MontoDescontado
                                    If DescuentoDinamico < 0 Then
                                        DescuentoDinamico = 0
                                    End If
                                End If
                                MontoDescontado = MontoDescontado + DescuentoDinamico
                                dgNomina.Rows(Actual).Cells(i).Value = DescuentoDinamico
                                DescuentoDinamico = 0
                            Next
                        End If
                        TotalDeducciones = MontoDescontado
                        TotalNeto = Total_Percepciones - TotalDeducciones
                        dgNomina.Rows(Actual).Cells(dgNomina.Columns.Count - 2).Value = TotalDeducciones
                        Application.DoEvents()
                        dgNomina.Rows(Actual).Cells(dgNomina.Columns.Count - 1).Value = TotalNeto
                        Application.DoEvents()

                        'Limpia variables
                        Sueldo = 0
                        dias = 0
                        SueldoNomina = 0
                        Despensa = 0
                        DiferenciaSueldo = 0
                        Horas_Extras = 0
                        Deporte = 0
                        Puntualidad = 0
                        Asistencia = 0
                        Gratificacion = 0
                        Total_Percepciones = 0
                        BaseGravada = 0
                        LimInferior = 0
                        ExcLimInf = 0
                        PorcenLimInfe = 0
                        ImptoMarginal = 0
                        CuotaFija = 0
                        Cesantia = 0
                        ImpRetener = 0
                        Impto = 0
                        Imss = 0
                        Invalidez = 0
                        Maternidad = 0
                        Medicos = 0
                        Subsidio = 0
                        PrestacionDinero = 0
                        PrestacionEspecie = 0
                        TotalDeducciones = 0
                        TotalNeto = 0
                        FechaLiquidacion = Now.AddDays(10)
                        FechaLiquidacionFormateada = ""
                        UltimoPeriodo = 0
                    End If
                    'Primero = False
                Else
                    'Limpia variables
                    Sueldo = 0
                    dias = 0
                    SueldoNomina = 0
                    Despensa = 0
                    DiferenciaSueldo = 0
                    Horas_Extras = 0
                    Deporte = 0
                    Puntualidad = 0
                    Asistencia = 0
                    Gratificacion = 0
                    Total_Percepciones = 0
                    BaseGravada = 0
                    LimInferior = 0
                    ExcLimInf = 0
                    PorcenLimInfe = 0
                    ImptoMarginal = 0
                    CuotaFija = 0
                    Cesantia = 0
                    ImpRetener = 0
                    Impto = 0
                    Imss = 0
                    Invalidez = 0
                    Maternidad = 0
                    Medicos = 0
                    Subsidio = 0
                    PrestacionDinero = 0
                    PrestacionEspecie = 0
                    TotalDeducciones = 0
                    TotalNeto = 0
                    FechaLiquidacion = Now.AddDays(10)
                    FechaLiquidacionFormateada = ""
                    UltimoPeriodo = 0
                End If
            End If
            Operador = rdBuscar("IdOperador")
            CodigoEmpleado = rdBuscar("CodigoOperador").ToString.Trim
            IDEmpleado = BuscarIntDatoCitra("Empleados", "IDEmpleado", "Codigo='" & CodigoEmpleado.ToString.Trim & "'")
            Nombre = Trim(BuscarStrDatoCitra("Empleados", "NombreCompleto", "Codigo='" & CodigoEmpleado & "'"))
            lblStatus.Text = "Calculando nomina de " & Nombre & "..."
            Application.DoEvents()
            IdRuta = rdBuscar("IdRuta")
            FechaActual = Format(rdBuscar("Fecha"), "MM/dd/yyyy")
            Precio = BuscarDblDatoCitra("SELECT Precio FROM PrecioVueltasBella WHERE IdRuta=" & IdRuta & " AND CONVERT(VARCHAR,Fecha,101)='" & FechaActual & "'")
            Vueltas = rdBuscar("Vueltas")

            Sueldo = Sueldo + (Vueltas * Precio)
            If FechaLiquidacionFormateada <> Format(CDate(rdBuscar("fecha").ToString).Year, "0000") & Format(CDate(rdBuscar("fecha").ToString).Month, "00") & Format(CDate(rdBuscar("fecha").ToString).Day, "00") Then
                dias = dias + 1
            End If
            FechaLiquidacion = rdBuscar("fecha")
            FechaLiquidacionFormateada = Format(CDate(FechaLiquidacion).Year, "0000") & Format(CDate(FechaLiquidacion).Month, "00") & Format(CDate(FechaLiquidacion).Day, "00")

            'Inserta registros a tabla de acumulados*************************************************************
            'Acum.IdSueldo = Acum.consecutivo
            'Acum.Fecha = rdBuscar("fecha")
            'Acum.IdClien01 = rdBuscar("IdAutobus")
            'Acum.RazonSo01 = rdBuscar("NoEconomico").ToString.Trim
            'Acum.Nomina = txtNomina.Text
            'Acum.Anio = txtAnio.Text
            'Acum.Folio = txtFolio.Text
            'Acum.Total = Vueltas * Precio
            'Acum.Insertar()
        Loop
        If Sueldo > 0 Then
            'Calcula Sueldo*************************************
            SueldoNomina = SueldoDiario * dias
            If Sueldo <= SueldoDiario Then
                SueldoNomina = Sueldo
            ElseIf SueldoNomina > Sueldo Then
                SueldoNomina = Sueldo
            End If
            DiferenciaSueldo = Sueldo - SueldoNomina
            'Calcula Despensa***********************************
            Despensa = (SM_Zona_A * 0.4) * 7
            If DiferenciaSueldo < Despensa Then
                Despensa = DiferenciaSueldo
            ElseIf Despensa > DiferenciaSueldo Then
                Despensa = DiferenciaSueldo
            End If
            DiferenciaSueldo = Sueldo - (SueldoNomina + Despensa)
            'Calcula Horas Extras*******************************
            CalculoExtras = ((((SM_Zona_A * 3.5) / 8) * 2) * 9)
            If CalculoExtras < (SM_Zona_C * 5) Then
                Horas_Extras = CalculoExtras
            Else
                Horas_Extras = SM_Zona_C * 5
            End If
            If DiferenciaSueldo < Horas_Extras Then
                Horas_Extras = DiferenciaSueldo
            ElseIf Horas_Extras > DiferenciaSueldo Then
                Horas_Extras = DiferenciaSueldo
            End If
            DiferenciaSueldo = Sueldo - (SueldoNomina + Despensa + Horas_Extras)
            'Calcula Deporte y Cultura**************************
            Deporte = SueldoNomina * 0.1
            If DiferenciaSueldo < Deporte Then
                Deporte = DiferenciaSueldo
            ElseIf Deporte > DiferenciaSueldo Then
                Deporte = DiferenciaSueldo
            End If
            DiferenciaSueldo = Sueldo - (SueldoNomina + Despensa + Horas_Extras + Deporte)
            'Calcula premio de puntualidad**********************
            Puntualidad = SueldoNomina * 0.1
            If DiferenciaSueldo < Puntualidad Then
                Puntualidad = DiferenciaSueldo
            ElseIf Puntualidad > DiferenciaSueldo Then
                Puntualidad = DiferenciaSueldo
            End If
            DiferenciaSueldo = Sueldo - (SueldoNomina + Despensa + Horas_Extras + Deporte + Puntualidad)
            'Calcula premio de asistencia**********************
            Asistencia = SueldoNomina * 0.1
            If DiferenciaSueldo < Asistencia Then
                Asistencia = DiferenciaSueldo
            ElseIf Asistencia > DiferenciaSueldo Then
                Asistencia = DiferenciaSueldo
            End If
            DiferenciaSueldo = Sueldo - (SueldoNomina + Despensa + Horas_Extras + Deporte + Puntualidad + Asistencia)
            'Calcula gratificacion*****************************
            Gratificacion = DiferenciaSueldo

            Total_Percepciones = SueldoNomina + Despensa + Horas_Extras + Deporte + Puntualidad + Asistencia + Gratificacion

            'Muestra valores*******************************************************************************************************

            '////////////////////////////CALCULO DE DEDUCCIONES////////////////////////////////////////////////////////////////////

            'Calcula Tarjeta*****************************************
            Tarjeta = 10 * dias

            Porcentaje = Total_Percepciones * ((BuscarDblDatoCitra("Empleados", "PorcentajeDescuento", "IdEmpleado=" & IDEmpleado)) * 0.01)
            'Muestra valores*******************************************************************************************************

            '////////////////////////////CALCULO DE DEDUCCIONES////////////////////////////////////////////////////////////////////

            'CALCULA ISR **********************************************************************************************************

            'Calcula Infonavit*****************************************

            CargoBimestre = BuscarDblDatoCitra("SELECT SUM(Monto) AS CMONTO FROM CargosInfonavit WHERE IdEmpleado=" & IDEmpleado & " AND Bimestre=" & txtInfonavit.Text & " AND YEAR(Fecha)=" & txtAnio.Text)
            'AbonoBimestre = Infonavit(IDEmpleado)
            RestaBimestre = CargoBimestre - AbonoBimestre
            If RestaBimestre > 0 Then
                DescuentoInfonavit = (RestaBimestre / DiasDescontarInfonavit) * dias '(CargoBimestre / (BuscarDblDato("SELECT cDias FROM MGWINFONAVIT WHERE CIDINFO=" & IdInfo))) * dias
                If DescuentoInfonavit > RestaBimestre Then
                    DescuentoInfonavit = RestaBimestre
                End If
                DeduccionesVerificar = ImpRetener + Imss + DescuentoInfonavit + Tarjeta
                If DeduccionesVerificar > Porcentaje Then
                    DescuentoInfonavit = Porcentaje - (ImpRetener + Imss)
                    If DescuentoInfonavit < 0 Then
                        DescuentoInfonavit = 0
                    End If
                End If
            Else
                DescuentoInfonavit = 0
            End If


            'Calcula Fonacot******************************************
            CargoMes = BuscarDblDatoCitra("SELECT SUM(Monto) AS CMONTO FROM CargosFonacot WHERE IdEmpleado=" & IDEmpleado & " AND Mes=" & txtFonacot.Text & " AND YEAR(Fecha)=" & txtAnio.Text)
            'AbonoMes = Fonacot(IDEmpleado)
            RestaMes = CargoMes - AbonoMes
            UltimoPeriodo = BuscarIntDatoCitra("SELECT AL FROM PeriodoFonacot WHERE Mes=" & txtFonacot.Text & " AND Anio=" & txtAnio.Text)

            If RestaMes > 0 Then
                DescuentoFonacot = (RestaMes / DiasDescontarFonacot) * dias '(CargoMes / (BuscarDblDato("SELECT cDias FROM MGWFONACOT WHERE CIDFONA=" & IdFona))) * dias
                If DescuentoFonacot > RestaMes Then
                    DescuentoFonacot = RestaMes
                End If
                DeduccionesVerificar = ImpRetener + Imss + DescuentoInfonavit + DescuentoFonacot + Tarjeta
                If DeduccionesVerificar > Porcentaje Then
                    If DescuentoFonacot > 0 Then
                        DescuentoFonacot = Porcentaje - (ImpRetener + Imss + DescuentoInfonavit)
                    End If
                    If DescuentoFonacot < 0 Then
                        DescuentoFonacot = 0
                    End If
                End If

            Else
                DescuentoFonacot = 0
            End If


            'Imprime valores de columnas fijas*****************************************************
            dgNomina.Rows.Add(Row)
            Actual = dgNomina.Rows.Count - 1
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(0).Value = IDEmpleado
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(1).Value = CodigoEmpleado
            Application.DoEvents()
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(2).Value = Nombre
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(3).Value = Sueldo
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(4).Value = dias
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(5).Value = SueldoNomina
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(6).Value = Despensa
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(7).Value = Horas_Extras
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(8).Value = Deporte
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(9).Value = Puntualidad
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(10).Value = Asistencia
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(11).Value = Gratificacion
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(12).Value = Total_Percepciones
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(13).Value = ImpRetener
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(14).Value = Tarjeta
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(15).Value = DescuentoInfonavit
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(16).Value = DescuentoFonacot
            Application.DoEvents()


            'Calcula descuentos dinamicos*****************************************************
            MontoDescontado = ImpRetener + Imss + DescuentoInfonavit + DescuentoFonacot
            If TotalColumnas > 19 Then
                For i = 17 To dgNomina.Columns.Count - 3
                    'DescuentoDinamico = Monto_Descuento(dgNomina.Columns(i).HeaderText.ToString.Trim, IDEmpleado, dias)
                    DeduccionesVerificar = MontoDescontado + DescuentoDinamico
                    If DeduccionesVerificar > Porcentaje Then
                        DescuentoDinamico = Porcentaje - MontoDescontado
                    End If
                    MontoDescontado = MontoDescontado + DescuentoDinamico
                    dgNomina.Rows(Actual).Cells(i).Value = DescuentoDinamico

                    DescuentoDinamico = 0
                Next
            End If

            TotalDeducciones = MontoDescontado
            TotalNeto = Total_Percepciones - TotalDeducciones

            dgNomina.Rows(Actual).Cells(dgNomina.Columns.Count - 2).Value = TotalDeducciones
            Application.DoEvents()
            dgNomina.Rows(Actual).Cells(dgNomina.Columns.Count - 1).Value = TotalNeto
            Application.DoEvents()

            'Limpia variables
            Sueldo = 0
            dias = 0
            SueldoNomina = 0
            Despensa = 0
            DiferenciaSueldo = 0
            Horas_Extras = 0
            Deporte = 0
            Puntualidad = 0
            Asistencia = 0
            Gratificacion = 0
            Total_Percepciones = 0

            BaseGravada = 0
            LimInferior = 0
            ExcLimInf = 0
            PorcenLimInfe = 0
            ImptoMarginal = 0
            CuotaFija = 0
            Cesantia = 0
            ImpRetener = 0
            Impto = 0
            Imss = 0
            Invalidez = 0
            Maternidad = 0
            Medicos = 0
            Subsidio = 0
            PrestacionDinero = 0
            PrestacionEspecie = 0
            TotalDeducciones = 0
            TotalNeto = 0

        End If

        Dim Contador As Integer = dgNomina.Rows.Count
        If Contador = 0 Then
            Dim Cols As Integer = dgNomina.Columns.Count - 1
            If Cols > 17 Then
                Do While Cols <> 17
                    dgNomina.Columns.RemoveAt(dgNomina.Columns(Cols).Index)
                    Cols = Cols - 1
                Loop
            End If
            dgNomina.Visible = False
            lblStatus.Text = "No hay registros para procesar"
            Exit Sub
        End If



        lblStatus.Text = "La nómina se ha calculado correctamente"
        Application.DoEvents()
    End Sub

    Private Sub frmNominaBellavista_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        dgNomina.Visible = False
        ToolStrip1.Cursor = Cursors.Hand
        ToolStrip1.RenderMode = System.Windows.Forms.ToolStripRenderMode.System

        If NominaNueva = True Then
            txtFolio.Text = (BuscarIntDatoCitra("SELECT MAX(IdNomina) as Id FROM NominaGeneral")) + 1
        Else
            txtFolio.Text = IDNomina
        End If
        Periodos()

        PuedeContinuar = False

        lblStatus.Text = "Preparado para calcular..."
        Application.DoEvents()
        Guardado = False
    End Sub
    Sub Periodos()

        lstPeriodos.Items.Clear()

        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = NominasConnection

        Dim strSql As String = ""
        strSql = "SELECT NombreTipoPeriodo FROM NOM10023"

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Do While rdBuscar.Read()
            lstPeriodos.Items.Add(rdBuscar("NombreTipoPeriodo").ToString.Trim)
        Loop
    End Sub
    Sub Actualizar()
        Dim intFolio As Integer = 0
        If Me.txtFolio.Text <> "" Then
            intFolio = Me.txtFolio.Text
            Nom.IdNomina = Me.txtFolio.Text
        Else
            intFolio = 0
            Nom.IdNomina = 0
        End If
        Nom.Buscar()
        Scatter()
        Me.txtFolio.Text = intFolio
        Nom.IdNomina = Me.txtFolio.Text
    End Sub
    Private Sub Scatter()
        If Nom.Nomina = 0 Then
            txtInfonavit.Text = BuscarIntDatoCitra("PeriodoInfonavit", "Bimestre", "Status='Abierto'")
            txtFonacot.Text = BuscarIntDatoCitra("PeriodoFonacot", "Mes", "Status='Abierto'")
            txtAnio.Text = Now.Year
            txtNomina.Text = Nom.Nomina
            Nomi = Nom.Folio
            datInicial.Value = Nom.FechaInicial
            datFinal.Value = Nom.FechaFinal
            datAplicacion.Value = Nom.FechaAplicacion

            txtAnio.Enabled = True
            txtNomina.Enabled = True
            datInicial.Enabled = True
            datFinal.Enabled = True
            datAplicacion.Enabled = True
            RadButton2.Enabled = True
            RadButton3.Enabled = True

            dgNomina.Rows.Clear()
            Dim i As Integer = dgNomina.Columns.Count - 1
            If i > 16 Then
                Do While i <> 16
                    dgNomina.Columns.RemoveAt(dgNomina.Columns(i).Index)
                    i = i - 1
                Loop
            End If
            dgNomina.Visible = False
            lblStatus.Text = "Preparado para calcular..."
            Application.DoEvents()
        Else
            txtInfonavit.Text = Nom.Infonavit
            txtFonacot.Text = Nom.Fonacot
            txtAnio.Text = Nom.Anio
            txtNomina.Text = Nom.Nomina
            Nomi = Nom.Folio
            datInicial.Value = Nom.FechaInicial
            datFinal.Value = Nom.FechaFinal
            datAplicacion.Value = Nom.FechaAplicacion

            txtAnio.Enabled = False
            txtNomina.Enabled = False
            datInicial.Enabled = False
            datFinal.Enabled = False
            datAplicacion.Enabled = False
            RadButton2.Enabled = False
            RadButton3.Enabled = False

            dgNomina.Visible = True
            lblStatus.Text = "Nómina de solo lectura"
            Application.DoEvents()
            BuscaNomina()
            BuscaDinamicos()
        End If
    End Sub
    Sub BuscaNomina()
        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = CitraConnection

        Dim strSql As String = ""
        strSql = "SELECT * FROM NominaDetalle WHERE IdNomina=" & txtFolio.Text & " ORDER BY IdDetalle"

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim Columnas As Integer = BuscarIntDatoCitra("NominaGeneral", "Columnas", "Folio=" & Nomi)

        Dim I As Integer
        Dim Cont As Integer = 0
        Dim ColTotal As Integer = 0

        'Prepara el grid******************************************************************************
        For I = 3 To dgNomina.Columns.Count - 1
            dgNomina.Columns(I).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            dgNomina.Columns(I).DefaultCellStyle.Format = "N2"
        Next
        dgNomina.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
        dgNomina.Columns(4).DefaultCellStyle.Format = "N0"

        I = 17
        Dim b As Integer = 16

        For I = 1 To Columnas
            b = b + 1
            dgNomina.Columns.Add("Col" & b, "")
            dgNomina.Columns(b).Width = 80
            dgNomina.Columns(b).ReadOnly = True
            dgNomina.Columns(b).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
            dgNomina.Columns(b).DefaultCellStyle.Format = "N2"
            Cont = Cont + 1
        Next

        ColTotal = dgNomina.Columns.Count - 1
        dgNomina.Columns(ColTotal - 1).HeaderText = "Total Deducciones"
        dgNomina.Columns(ColTotal).HeaderText = "Total"

        For I = 1 To 2
            dgNomina.Columns(I).Frozen = True
        Next

        'Carga Datos de nomina general********************************************************************
        Dim Row As DataRow
        I = 0
        Do While rdBuscar.Read()
            dgNomina.Rows.Add(Row)
            dgNomina.Rows(I).Cells(0).Value = rdBuscar("IdEmpleado")
            dgNomina.Rows(I).Cells(1).Value = rdBuscar("Codigo").ToString.Trim
            dgNomina.Rows(I).Cells(2).Value = rdBuscar("Nombre").ToString.Trim
            dgNomina.Rows(I).Cells(3).Value = rdBuscar("Ingreso")
            dgNomina.Rows(I).Cells(4).Value = rdBuscar("Dias")
            dgNomina.Rows(I).Cells(5).Value = rdBuscar("Sueldo")
            dgNomina.Rows(I).Cells(6).Value = rdBuscar("Ayuda")
            dgNomina.Rows(I).Cells(7).Value = rdBuscar("Horas")
            dgNomina.Rows(I).Cells(8).Value = rdBuscar("Deporte")
            dgNomina.Rows(I).Cells(9).Value = rdBuscar("Puntualidad")
            dgNomina.Rows(I).Cells(10).Value = rdBuscar("Asistencia")
            dgNomina.Rows(I).Cells(11).Value = rdBuscar("Gratificacion")
            dgNomina.Rows(I).Cells(12).Value = rdBuscar("Percepciones")
            dgNomina.Rows(I).Cells(13).Value = rdBuscar("ISR")
            dgNomina.Rows(I).Cells(14).Value = rdBuscar("IMSS")
            dgNomina.Rows(I).Cells(15).Value = rdBuscar("Infonavit")
            dgNomina.Rows(I).Cells(16).Value = rdBuscar("Fonacot")
            dgNomina.Rows(I).Cells(ColTotal - 1).Value = rdBuscar("Deducciones")
            dgNomina.Rows(I).Cells(ColTotal).Value = rdBuscar("Total")
            I = I + 1
        Loop

    End Sub
    Sub BuscaDinamicos()
        Dim cnConn As New SqlConnection
        cnConn.ConnectionString = CitraConnection

        Dim strSql As String = ""
        strSql = "SELECT * FROM Movimientos WHERE IdNomina=" & txtFolio.Text & " ORDER BY IdMovimiento"

        Dim cmdBuscar As New SqlCommand
        cmdBuscar.Connection = cnConn
        cmdBuscar.CommandText = strSql
        Dim rdBuscar As SqlDataReader
        cnConn.Open()
        rdBuscar = cmdBuscar.ExecuteReader

        Dim i As Integer = 0
        Dim j As Integer = 16
        Dim Adeudo As Integer = 0

        Do While rdBuscar.Read()
            If Adeudo <> rdBuscar("IdAdeudo") Then
                j = j + 1
                i = 0
                dgNomina.Columns(j).HeaderText = Trim(BuscarStrDatoCitra("Adeudos", "Nombre", "idAdeudo=" & rdBuscar("idAdeudo")))
            End If
            Adeudo = rdBuscar("IdAdeudo")
            dgNomina.Rows(i).Cells(j).Value = rdBuscar("Monto")
            i = i + 1
        Loop
    End Sub


    Private Sub txtFolio_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles txtFolio.TextChanged
        Actualizar()

    End Sub

    Private Sub ToolStripButton4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton4.Click
        dgNomina.Rows.Clear()
        txtFolio.Text = 0
        Dim i As Integer = dgNomina.Columns.Count - 1
        Do While i <> 16
            dgNomina.Columns.RemoveAt(dgNomina.Columns(i).Index)
            i = i - 1
        Loop
        frmModuloNominasBellavista.Actualizar()
        Close()
    End Sub
End Class